package com.qida.clm.core.network.intercept;

/**
 * 抽象出每个错误的处理者,该抽象类现在处理简单,因为考虑的需求还不清楚.
 * @author:xiexiang
 * @date:2016年1月13日 下午12:47:46
 */
public abstract class AbsProcessIntercept {
	
	protected AbsProcessIntercept mNextHandler;
	public void setNext(AbsProcessIntercept absHandler){
		if(mNextHandler == null){
			mNextHandler = absHandler;
		} else {
			mNextHandler.setNext(absHandler);
		}
	}

	/**
	 * 处理errorCode.
	 * @param errorCode 服务器返回ErrorCode
	 * @return
	 */
	public boolean processErrorCode(int errorCode){
		//先由自己是否可以处理,处理不了这个错误,抛给下一个处理者
		boolean isProcess = onInterceptErrorCode(errorCode);
		if(!isProcess){
			if(mNextHandler != null){
				return mNextHandler.processErrorCode(errorCode);
			}
		}
		return isProcess;
	}

	protected abstract boolean onInterceptErrorCode(int errorCode);
	public abstract int getErrorCode();
}